Inputs of the METOD Algorithm

In this section, details on the required inputs and optional inputs of the METOD Algorithm are provided.

Required Inputs

The required inputs of the METOD Algorithm are listed below, along with the variable type. All required inputs need to be updated before running the METOD Algorithm.

Input parameter

Type

Description

f

function

Objective function evaluated at a point, which is a 1-D array with shape (d, ), and outputs a float.

g

function

Gradient evaluated at a point, which is a 1-D array with shape (d, ), and outputs a 1-D array with shape (d, ).

func_args

tuple

Extra arguments passed to f or g.

d

integer

Size of dimension.

Optional Inputs

The optional inputs of the METOD Algorithm are listed below, along with the variable type.

Input parameter name

Default input

Type

Description

num_points

1000

integer

The number of points \(x_n^{(0)}\) generated before stopping the METOD Algorithm.

beta

0.01

float

Small constant step size \(\beta\) to compute the partner points \(\tilde {x}_n\) of \(x_n\) (see (2)).

tolerance

0.00001

float

Stopping condition for anti-gradient descent iterations (1). That is, apply anti-gradient descent iterations until \(\| \nabla f(x_n^{(k)}) \| < \delta\), where the value of \(\delta\) is represented by tolerance. Furthermore, if \(\| \nabla f(x_n^{(0)}) \| < \delta\), another starting point \(x_n^{(0)}\) is used.

projection

False

boolean

If projection = True, then \(x_n^{(k)}\) \((k=1,...,K_n)\) is projected into a feasible domain \(\mathfrak{X}\). If projection = False, then \(x_n^{(k)}\) \((k=1,...,K_n)\) is not projected.

const

0.1

float

Value of \(\eta\) used in (4).

m

3

integer

The number of iterations of anti-gradient descent (1) to apply to a point \(x_n^{(0)}\) before making a decision on terminating descents (See Step 2 of the METOD Algorithm).

option

‘minimize_scalar’

string

Option of solver in Python to compute \(\gamma_n^{(k)}\) for anti-gradient descent iterations (1). Choose from option = ‘minimize’ or option = ‘minimize_scalar’.

See [5] for more details on scipy.optmize.minimize and scipy.optmize.minimize_scalar.

met

‘Brent’

string

A method is required for option = ‘minimize’ or option = ‘minimize_scalar’ (see [5] for more details).

initial_guess

0.005

float

Initial guess passed to option = ‘minimize’ and the upper bound for the bracket interval when option = ‘minimize_scalar’ for met = ‘Brent’ and met = ‘Golden’.

set_x

‘sobol’

string

If set_x = ‘random’, then \(x_n^{(0)} \in \mathfrak{X}\) \((n=1,...,N)\) is generated uniformly at random for the METOD Algorithm. If set_x = ‘sobol’, then a 2-D array of Sobol sequence samples, introduced in [3], are generated using SALib [1]. Sobol sequence samples are transformed so that samples are within \(\mathfrak{X}\). The Sobol sequence samples are then shuffled at random and selected by the METOD Algorithm.

bounds_set_x

(0,1)

tuple

Feasible domain \(\mathfrak{X}\).

relax_sd_it

1

float or integer

Multiply the step size \(\gamma_n^{(k)}\) by a small constant in [0, 2], to obtain a new step size for anti-gradient descent iterations. This process is known as relaxed anti-gradient descent [2].